본문으로 건너뛰기

06.02 일지-light

진행상황(CS)

  • 선형대수(Eigenvalue/Eigenvector/EigenSpace/Eigenvalue Matrix 등등.. )
  • 딥러닝 수업(RNN(Recurrent Neural Network) - NLP(Natural Language Processing) 개요)

앞으로 계획

  • 주말에 운영체제 과제 RCU보고서 5페이지까지 작성
  • 주말에 선형대수 Eigen & Symmetric까지 이해
  • 주말에 운영체제 진도(I/O device, deadlock) 정리

너무 비어보여서 딥러닝 수업시간에 정리한 것으로 채워보겠습니다 ㅎㅎ

14주차 정리

NLP key concept

지난 시간에 1 hot vector → language model을 사용했었는데

1 hot vector 보다 좋은 representation? - Word embeddings

Word to vector 중 Skip-grams

limitation 해결 접근법 알아보기 → Sentiment classification

Conditional language model = 예: 프랑스어 → 영어문장

: sequence를 다루다 보니 sequence to sequence 모델

& 효율성을 위한 Beam search

Word representation

: n개의 단어를 가진 사전을 만들어 놓고, n개의 dimension을 가지는 벡터로 모든 단어를 표현할 수 있다.(1 hot = 1개의 1 나머지는 0), Man(O_5391 notation)

how to generate sentence?

I want to a glass of orange _.

I want to a glass of apple _.

→ training set에 apple은 없었다면?

training 에서 orange와 apple 사이의 유사성이 표현되어야 만들어낼 수 있다.

⇒ 1hot vector를 사용하면 단어간의 비슷하고 다른 정도를 알기 힘들다

일반적으로 dot product로 유사성을 표현한다.

조금이라도 달라지면 어려움이 있다.

⇒ word representation 자체가 고유 의미를 인코딩할 수 있으면 좋겠다.

Featurized representation: word embedding

: category 별로 값들을 처리 = 단어가 가지는 고유성에 대한 값들을 매긴다.

Visualizing word embedding

: 군집화 ~ 300 dimension space → 시각화 알고리즘 t-sne

→ 사전을 미리 만들어져있으면 좋겠다 = transfer learning의 영역

Named entity recognition example

: bidirectional RNN → Name에 값을 1로 세팅

Sally Jonhson is an orange farmer

Robert Lin is an durian cultivator

back 과정에서 이름을 결정했다면, 유사성을 보이는 단어를 쓰더라도 비슷하다.

: 1 hot vector로 쓰기엔 엄청 많은 데이터를 필요로 한다…

durian cultivator와 같은 아예 training set에 없었을 수 있는 그것을 처리하기 위해서 위의 word embedding이…

Transfer learning and word embeddings

: pre-trained 된 word embedding을 다운받아서 처리

  1. Learn word embeddings from large text corpus (1-100B)
  2. Transfer embedding with smaller training set(100k) → 내가 가지고 있는 training set으로 업데이트하기 위해 조금 바꿔서 fine tuning해서 쓸 수도 있다.
  3. Optional: Continue to finetune the word embedding → 목적에 맞게 적용시킬 수 있다.

: transfer learning에는 Name entity recognition, parsing, summary에 유용하다.

machine translation or generating 에서는 뭉치를 가지고 transfer learning을 하기보단 테스트를 위해 모은 데이터의 활용도가 높음. 목적으로 모은 쪽이 더 큰 편이기도 하고..

Relation to face encoding

: embedding 방식 = 고유값을 벡터로 표현하는 representation은 어느 필드에서나 쓰인다.

encoding & embedding이 혼용되어 많이 사용(비슷한 의미) → 비전(encoding), nlp(혼용), word(embedding)

word embedding ⇒ Analogy 표현이 쉽다

Analogy → Man:Woman = King: ???

e_man - e_woman = [-2 0 0 … ] 이런 꼴

→ e값을 이용한 단어값 출력가능 → e_king - e_w 찾을 수 있다.

Analogies using word vectors

벡터가 기하적으로도 비슷, n dimension에서만 성립,

압축한 t-SNE에서는 사용불가. 오리지날 n-dim에서 성립

Sim(e_w, e_king - e_man + e_woman) 유사성의 최댓값을 표현하는 것이 중요

Cosine similarity

: dot product로 consine similarity를 표현하면 된다.

dot product/L2 norm → cosine simmilarity

: 벡터들의 차이값만 가지고 단어가 가지는 의미를 표현가능

!실제로는 dimension은 의미가 딱딱 떨어지진 않는다 = 사람이 이해하는 방식으로 이용하진 않는다.

category를 정해서 training을 시키는게 아니라 자기가 알아서 word 간 중요한 의미의 축을 만들어서 그에 대한 값을 학습한다.

Embedding matrix

E x O_6257 = e_6257

E: 300 x 10000 dim

O: 10000 x 1 dim

e: 300 x 1 dim

→ E를 가지고와서 활용하면 의미를 담은 vector representation을 사용할 수 있다.

10000 dim이 단어의 축이므로 1 hot vector를 곱하면 단어 중 해당되는 단어만 살아남아 계산에 사용된다.

Nueral language model(생성형 모델의 사용방식)

I → O_4343 → E → e_4343(300dim) ⇒

orange → O_6257 → E → e_6257(300dim) ⇒

⇒ 모아서 softmax에 넣는다.

e들을 모아서 입력값으로 넣을 때, 가변적이면 힘드니까

앞에 있는 것 중 n개의 단어만 보고 300n 개의 input을 받는 layer → softmax → 단어가 튀어나오게

Other context/target pairs

: target 단어가 중간에 있을 때?

Context: 인풋으로 넣기 위해 보는 단어

Last 4 words

4 word on left & right

last 1 words

Nearby 1 word: +- 4개 단어 중 1개를 random pick 해서 사용

→ (점점 더 알고리즘들이 간단하게 발달 ㅋㅋ 하지만 필요한 데이터베이스는 커진다.)

supervised learning context→targe || word embedding을 잘 만들기 위해서

context와 target을 pair화 해서 supervised-learning으로 E를 만들어낸다.

⇒ 이렇게 트레이닝된 모델이 E를 잘 만들어내더라

Skip-grams

: context-target 페어를 만들어 내는 것이 목적

context 주변에서 target 잡아내서 사용

Model: Skip-grams

Context(”orange”) → Target t (”juice”)

: orange에 따른 각각의 Softmax 확률을 하나하나 계산해봤을 때 juice가 가장 크게 나오는 것을기대?

p(t|c) = e^{𝜽_t x e_c} / ∑e^{𝜽_j x e_c} ( 𝜽_t: output t에 대한 파라미터)

⇒ 학습시켜준다 supervised learning이므로 y= 1 hot vector, y^ = softmax의 결과 ⇒ Loss function을 계산해서 처리

Problem: with Softmax classification

: softmax 계산할 때 10000개에 대해 ∑계산처리를 해야되는데 너무 오래걸리더라(10000개도 작은편)

→ 사실 제일 큰 놈만 골라내면 되는거라 hierarchical softmax를 활용 → 가장 적합한 것을 찾아내기 위함

10000개를 모두 계산해서 찾는 것이 아니라 5000/5000 중 어디로 가야하는지?

2500/2500 중 어디로 가야하는지? … log scale 연산을 이용해서 처리한다.

구조를 만들어서 하나를 픽하는 알고리즘도 있다.

how to sample the context c?

the of a and to → 많이 나오는 것에 비해 context에 크게 중요하지 않다.

context c를 선택할 때, 가지고 있는 데이터 셋에 대한 probability에 비례해서 뽑으면 큰 문제는 없지만 그 때,

the of a and 값은 것들이 너무 많이 걸린다.

⇒ 이 때 p(c)를 어떻게 구할 것인지…

Defining a new learning problem

: context와 target 을 바로 이어서 사용하지 않고, negative sampling 활용

I want a glass of orange juice to go along with my cereal

→ sentence로 부터 만들어진 pair는 label을 1로 주고

vocabulary 에서 랜덤하게 pair한 것은 label을 0으로 준다.

Context(c) / Word(t) / target(y)

dataset을 크게 가져갈수록 k를 작게 가져간다.

k: negative sample의 개수

기존의 Softmax를 10000개에 대해 classification 했다면

→ negative sampling 이후, c와 t가 주어졌을 떄, label 이 1이 되는 probabilty가 얼마나?

𝜎(𝜽_t x e_c) = ?

⇒ k+1개의 binary classification으로 계산하면 된다.(10000개를 모두 업데이트 하는 것이 아니라 k+1개의 값만 계산하면 되므로 훨씬 빠름, 선택적으로/부분적으로 트레이닝이 되는 경우 → 많이 해야함)

기존에 계산하는 시간보다 훨씬 빠르게 p(t|c)계산 가능

How to selecting negative example?

p(w_i) = f(w_i)^{3/4} / ∑f(w_j)^{3/4}

그 과정에서 만들어지는 Matrix가 analogy에 강하고 다양하게 활용할 수 있더라…

Sentiment classification problem

: like reviews → 레스토랑 평가 정량화

Simple sentiment classificatin model

사전에 있는 각각을 e_8929화, …

  1. 300dim을 averaging내고 softmax 해서 y^을 내도 어느 정도 괜찮다!

→ averaging의 경우 lacking good a, good b, good c 에서 문제가 생긴다. 제대로 몰라본다.

  1. Average로 처리 X, 단어간의 의미가 영향을 미치도록 RNN을 활용하자

RNN

…??

The probelm of bias(인간의 편견) in word embeddings

예 - Man: Woman as King:Queen

Father:Doctor as Mother:Nurse ← 단어가 사람이 가진 편견이 드러나있다…

: 인종 소득 수준 등으로부터의 문제가 발생할 수 있다.

Addressing bias in word embeddings

: 컴퓨터에서 편향을 없애기 위한 컨셉

word embedding시…

space 상에서 일단 해당 category의 dimension을 찾아야한다.

→ 나머지 dimension은 관계없으므로 무시

→ neutralize하기 위해서 definitional 하지 않은 경우 bias direction의 방향성을 0으로 만들도록 projection하면 된다.

방향성이 0인데, 다른 값들과의 관계에서도 비슷한 거리를 가져야 하므로,

babysitter 방향성 0으로 한 후, she/he, girl/boy 수정 = equalize pair

⇒ space상에서 조절함으로써 어느정도 조절할 수 있다.


Sequence to Sequence model

: 가장 가능성이 높은 경우를 만들거나…

→ in real, 확률에 따라서 랜덤하게 픽을 한다는 것.

many to many RNN 중에

input이 sequence로 들어가고 output으로 sequence가 나오도록…

Image captioning

: 이미지를 묘사하는 문장을 만들어내는 것

image classification 단계 통과 → softmax 이전의 feature vector를 그대로 RNN 모델에 넣어줌

마치 sequential(feature vector) input이 RNN으로 들어가는 것처럼

Machine translation as building a conditional language model

Language model

Machine translation: sequence를 바탕으로 conditional probability 계산?

conditional model

Finding the most likely translation

: SENTENCE

→ s1

→ s2

→ s3

⇒ translation은 제일 좋은 s1을 뽑아야하므로, probability를 고려하지 않는다.

language model: input이 없으므로 확률적으로 뽑아낸다.

translation: 정답이 있으므로 가장 적합한 것을 찾아내야함

: 그 때 그 때 마다 옳은 방법인 greedy search를 하는 방식을 쓰면?

→ 전체 맥락이 어울리게 만들어지는데 방해될 수도

Jane is visiting Africa ~

Jane is going ← going이 선택될 가능성이 더 높다..

⇒ 그러면 다 해보고 결정해야하나?

너무 많은 경우가 있음 10000^n 가짓수

Beam search algorithm

: 후보를 n개씩 뽑아내어 계산한다.

beam-width = n

후보 중에 가장 좋은 놈을 찾아서 계산한다.

Step1 3개 → Step2 → 3만개 중 3개를 선택한다. → p(y^<3> | x, “in september”) / … → … → end of sentence(문장 3개가 남음 → 제일 높은 확률을 선택한다.)

예: in september / jane is / jane visits → 또 3x10000 중 3개를 걸러내기

계층 수가 안맞으면? → 문장의 길이가 정해져있지 않아서 <EOS>가 들쭉날쭉한 경우에는 어떻게 비교하..?

B가 1이 되면 greedy search랑 동일